#Aquest Maquefile ha d'estar ubicat dins de la carpeta src del TSI-Framework

# should be either OSC_HOST_BIG_ENDIAN or OSC_HOST_LITTLE_ENDIAN
# Apple: OSC_HOST_BIG_ENDIAN
# Win32: OSC_HOST_LITTLE_ENDIAN
# i386 LinuX: OSC_HOST_LITTLE_ENDIAN


#En aquesta part, es declaren totes les llirberies que utilitzareu:
ENDIANESS=OSC_HOST_LITTLE_ENDIAN
PLATFORM=$(shell uname)

FRAMEWORKS = -lGL -lGLU -lglut

ifeq ($(PLATFORM), Darwin)
	FRAMEWORKS =  -framework OpenGL -framework GLUT
endif

SDL_CFLAGS  := $(shell sdl-config --cflags)
SDL_LDFLAGS := $(shell sdl-config --libs) -lSDL_mixer

#Aquesta variable defineix el nom que tindrà l'executable 
NOM_PROGRAMA = TuioDemo

#A common sources, heu d'afegir tots els fitxers de còdi que teniu, només serà necessari si feu més carpetes dins de src amb codi.
COMMON_SOURCES = $(shell ls ./*.cpp) $(shell ls ./Graphics/*.cpp) $(shell ls ./tuio/*.cpp) ./oscpack/osc/OscTypes.cpp ./oscpack/osc/OscReceivedElements.cpp ./oscpack/osc/OscPrintReceivedElements.cpp ./oscpack/ip/posix/NetworkingUtils.cpp ./oscpack/ip/posix/UdpSocket.cpp
#passa els sources a objectes
COMMON_OBJECTS = $(COMMON_SOURCES:.cpp=.o)

#Dins d'includes heu d'afegir tots els directoris amb headers(.h .hxx .hpp ...) que tingueu
INCLUDES = -I./oscpack -I./Graphics -I./tuio

#Es defineixen dos formes diferents per compilar, Debug (CDEBUG) o release (COPTS), 
#per triar una o altra heu de modificar el primer paràmetre de CXXFLAGS
COPTS  = -Wall -O3 $(SDL_CFLAGS)
CDEBUG = -Wall -g $(SDL_CFLAGS)
CXXFLAGS = $(COPTS) $(INCLUDES) -D$(ENDIANESS)

all: 	$(COMMON_OBJECTS)
	$(CXX) -o $(NOM_PROGRAMA) $+  $(SDL_LDFLAGS) $(FRAMEWORKS)

clean:
	rm -rf $(NOM_PROGRAMA) $(COMMON_OBJECTS)
